7

Apéndices


Apéndice A: Referencia rápida para XML

Este apéndice proporciona un resumen de las características y convenciones de XML como referencia rápida.


Partes de un documento de XML

Un documento de XML consta de las siguientes partes, en el orden en que figuran:


Declaración de XML

La declaración de XML, si se incluye, debe ser la primera línea de un documento de XML. Indica la versión de XML a la que se adhiere el documento y si el archivo incluye referencias a otros archivos. Por ejemplo:

<?xml version="1.0" standalone="no"?>


Declaración DOCTYPE (incluida la DTD)

La declaración DOCTYPE, la cual especifica la DTD del documento, debe aparecer después de la declaración de XML y antes de la etiqueta de comienzo del elemento raíz. Existen dos posibles partes de toda DTD: el subconjunto externo y el subconjunto interno. Si un documento tiene sólo un subconjunto externo, tendrá la siguiente estructura:

<?xml version="1.0" standalone="no">
<!DOCTYPE elemento_raíz SYSTEM "URL de la DTD">
<elemento_raíz>El contenido va aquí.</elemento_raíz>

Si un documento tiene sólo un subconjunto interno, tendrá la siguiente estructura:

<?xml version="1.0" standalone="yes">
<!DOCTYPE elemento_raíz [
<!-- La DTD va aquí. -->
]>
<elemento_raíz>El contenido va aquí.</elemento_raíz>

Si un documento tiene tanto un subconjunto externo como otro interno, tendrá la siguiente estructura:

<?xml version="1.0" standalone="no">
<!-- DTD externa -->
<!DOCTYPE elemento_raíz SYSTEM "URL de la DTD" [
<!-- La DTD interna va aquí. -->
]>
<elemento_raíz>El contenido va aquí.</elemento_raíz>


Elementos

Los elementos constan de una etiqueta de comienzo (<nombre_etiqueta>), algún contenido y una etiqueta de fin (</nombre_etiqueta>):

<nombre_etiqueta>El contenido va aquí.</nombre_etiqueta>

Una excepción es la etiqueta vacía, que puede ser una etiqueta individual con una barra inclinida antes del símbolo de cierre >:

<etiqueta_vacía/>

Todos los elementos deben estar anidados de forma correcta, lo que significa que la última etiqueta en abrirse debe cerrarse antes de que se cierre cualquiera de las demás etiquetas. Por ejemplo, la siguiente línea no sería válida en un documento de XML porque no se cierra <etiqueta2> antes de que se cierre <etiqueta1>:

<etiqueta1><etiqueta2>El contenido va aquí.</etiqueta1></etiqueta2>

Cada documento de XML debe tener un elemento raíz que contenga todos los demás elementos en el documento.

Los nombres de elementos son sensibles a mayúsculas y minúsculas. El nombre de cada elemento debe comenzar con una letra o un subrayado (_); los caracteres siguientes en el nombre pueden ser letras, subrayados, números, guiones y puntos, pero no espacios ni tabulaciones.


Atributos

Los elementos pueden tener atributos como parte de sus etiquetas de comienzo (o, en el caso de elementos vacíos, como parte de la etiqueta de comienzo/fin individual). Un atributo consta de un nombre de atributo seguido del signo igual y un valor de atributo entre comillas. Por ejemplo:

<nombre_elemento nombre_atributo="valor_atributo">Contenido</nombre_elemento>
<nombre_elemento nombre_atributo="valor_atributo"/>


Comentarios

Los comentarios constan de texto encerrado entre <!-- y -->. Los procesadores de XML no deben tener en cuenta el contenido de los comentarios. Los comentarios no pueden contener "--" ni otros comentarios.

<!-- Esto es un comentario. Se pueden utilizar aquí caracteres tales como < y >. -->


Instrucciones de procesamiento

Las instrucciones de procesamiento constan de texto recogido entre <? y ?>. Sólo los procesadores de XML leen las instrucciones de procesamiento, las cuales no pueden incluir contenido. La sintaxis para las instrucciones de procesamiento es la siguiente:

<?instrucción deseada?>


Referencias a caracteres

Las referencias a caracteres constituyen una manera de representar los caracteres Unicode en datos alfanuméricos analizados. La sintaxis para dichas referencias es la siguiente:

&#valor_Unicode_del_carácter;


Referencias a entidades

Las referencias a entidades son nombres que representan un carácter, cadena de texto o archivo específico. Las referencias a entidades en un documento de XML aparecen siempre entre los signos & y ;. Por ejemplo, &gt; representa el signo mayor que (<), el cual no se puede incluir en el contenido de XML, salvo como una referencia a entidad.

El significado de cada referencia a entidad que se utilice en un documento de XML debe definirse en la DTD del documento, con la excepción de las siguientes referencias a entidades predefinidas, las cuales se pueden utilizar sin definirse:

CarácterReferencia a entidad
<&lt;
>&gt;
&&amp;
"&quot;
'&apos;

XML bien formado

Para que un documento de XML esté bien formado, debe seguir estas reglas:


XML válido

Un documento de XML válido es uno que está bien formado y que se atiene a la DTD especificada por su declaración DOCTYPE.


Apéndice B: Referencia rápida para DTD

Este apéndice proporciona un resumen de las características y convenciones de DTD como referencia rápida.


Partes de una definición DTD

Una DTD puede constar de las siguientes partes, en cualquier orden:


Declaraciones de tipo de elemento

La sintaxis para una definición de tipo de elemento es la siguiente:

<!ELEMENT nombre_elemento (contenido_elemento)>

Los nombres de elementos son sensibles a mayúsculas y minúsculas. El nombre de cada elemento debe comenzar con una letra o un subrayado (_); los caracteres siguientes en el nombre pueden ser letras, subrayados, números, guiones y puntos, pero no espacios ni tabulaciones.

El contenido de los elementos puede constar de datos alfanuméricos analizados (es decir, texto y referencias a entidades expresados como ) y/u otros tipos de elementos. Los siguientes símbolos se pueden insertar después de cualquier nombre de elemento o cierre del paréntesis en la definición del contenido del elemento:

SímboloSignificado
NingunoExactamente uno
+Uno o más
*Cero o más
?Cero o uno

Para obligar a que un elemento vaya seguido de otro, utilice una coma:

<!ELEMENT nombre_elemento (elemento1, elemento2)>

Para indicar que el contenido puede incluir un elemento u otro, utilice |:

<!ELEMENT nombre_elemento (elemento1 | elemento2)>

Para permitir que un elemento incluya una combinación de elementos específicos y #PCDATA en cualquier orden, utilice la siguiente sintaxis:

<!ELEMENT nombre_elemento (#PCDATA | elemento1 | elemento2)*>

Para permitir que un elemento incluya cualquier combinación de elementos y #PCDATA en cualquier orden, utilice la siguiente sintaxis (observe que se omite el paréntesis):

<!ELEMENT nombre_elemento ANY>

Para definir un elemento vacío, utilice la siguiente sintaxis (observe que se omite el paréntesis):

<!ELEMENT nombre_elemento EMPTY>


Declaraciones de atributo

La sintaxis para una definición de atributo es la siguiente:

<!ATTLIST nombre_elemento nombre_atributo tipo_atributo valor_por_omisión>

Los nombres de atributos son sensibles a mayúsculas y minúsculas. El nombre de cada atributo debe comenzar con una letra o un subrayado (_); los caracteres siguientes en el nombre pueden ser letras, subrayados, números, guiones y puntos, pero no espacios ni tabulaciones.

A continuación se indican los tipos de atributos válidos:

Tipo de atributoSignificado
CDATADatos alfanuméricos y referencias a entidades, entre comillas ("")
IDDebe contener un nombre* exclusivo para cada elemento de este tipo
IDREFEl nombre* de ID (identificación) exclusivo de un elemento en el archivo de XML
ENTITYEl nombre* de una referencia a entidad externa sin analizar definida en la DTD
ENTITIESUna lista de nombres de ENTITY, separados por espacios
EnumeradoUna lista entre paréntesis de nombres*, separados por los caracteres |
NMTOKENUn valor que contiene sólo caracteres nombre_caracteres**
NMTOKENSUna lista de atributos NMTOKEN, separados por espacios
NOTATIONEl nombre de una anotación definida en la DTD
NOTATION enumeradoUna lista entre paréntesis de atributos NOTATION, separados por los caracteres |

*Los nombres deben comenzar con una letra o un subrayado (_); los caracteres siguientes en el nombre puede ser letras, subrayados, números, guiones y puntos, pero no espacios ni tabulaciones.

**Los caracteres nombre_caracteres incluyen letras, subrayados, números, guiones o puntos, pero no espacios ni tabulaciones.

A continuación se indican los valores de atributo por omisión válidos:

Tipo de atributoSignificado
#REQUIREDEste atributo debe ser especificado por el elemento
#IMPLIEDEste atributo puede o no utilizarse
#FIXED valorSi no se especifica, se presupone que este atributo es valor; si se especifica, debe ser valor
valor_por_omisiónSi no se especifica, se presupone que este atributo es valor_por_omisión

Comentarios

Los comentarios constan de texto encerrado entre <!-- y -->. Los procesadores de XML no deben tener en cuenta el contenido de los comentarios. Los comentarios no pueden contener "--" ni otros comentarios.

<!-- Esto es un comentario. Se pueden utilizar aquí caracteres tales como < y >. -->


Referencias a caracteres

Las referencias a caracteres constituyen una manera de representar los caracteres Unicode en datos alfanuméricos analizados. La sintaxis para dichas referencias es la siguiente:

&#valor_Unicode_del_carácter;


Declaraciones de referencia a entidades

Existen cinco tipos de entidades. La sintaxis para su declaración es la siguiente:

Tipo de entidadSíntaxis
Interna analizada<!ENTITY nombre_entidad "texto de la entidad">
Externa analizada<!ENTITY nombre_entidad SYSTEM "URL del archivo"> O BIEN <!ENTITY nombre_entidad PUBLIC "nombre del archivo" "URL del archivo">
Externa sin analizar<!ENTITY nombre_entidad SYSTEM "URL del archivo" NDATA nombre_anotación> O BIEN <!ENTITY nombre_entidad PUBLIC "nombre del archivo" "URL del archivo" NDATA nombre_anotación>
Parámetro interno<!ENTITY % nombre_entidad "texto de la entidad">
Parámetro externo<!ENTITY % nombre_entidad SYSTEM "URL del archivo"> O BIEN <!ENTITY % nombre_entidad PUBLIC "nombre del archivo" "URL del archivo">

La sintaxis para utilizar los tres primeros tipos de referencia a entidades es &nombre_entidad;. La sintaxis para utilizar una entidad de parámetro es %nombre_entidad;. Las referencias a entidades de parámetro siempre son analizadas y sólo se pueden utilizar en una DTD.


Declaraciones da anotación

Las declaraciones de anotación deben especificarse de una de las dos maneras siguientes:

<!NOTATION nombre_anotación SYSTEM "Identificador externo">
<!NOTATION nombre_anotación PUBLIC "Nombre de identificador externo" "URL de respaldo">

El identificador externo debería ser el nombre de una aplicación que pueda procesar o mostrar archivos a los que se aplique la anotación. Por ejemplo:

<!NOTATION gif SYSTEM "Microsoft Internet Explorer">

Tenga en cuenta que la aplicación que procesa el XML debe encargarse de pasar el URL a la aplicación indicada por el identificador externo.



Instrucciones de procesamiento

Las instrucciones de procesamiento constan de texto recogido entre <? y ?>. Sólo los procesadores de XML leen las instrucciones de procesamiento, las cuales no pueden incluir contenido. La sintaxis para las instrucciones de procesamiento es la siguiente:

<?instrucción deseada?>


Apéndice C: En qué consiste la codificación

Supongamos que acaba de exportar un archivo de XML desde avenue.quark y al examinarlo en el editor de texto, observa una "a" minúscula acentuada en todos los lugares donde pensaba que había un símbolo de marca comercial (TM). De hecho, muchos de los símbolos se ven raros. ¿Qué ha ocurrido?

Es muy probable que su editor de texto no sea compatible con el tipo de codificación utilizado por el archivo de XML. En este apéndice se explica detalladamente el tema.


¿Qué es la codificación?

La codificación es una especificación que correlaciona un conjunto de caracteres con valores numéricos correspondientes. Por ejemplo, el tipo de codificación ASCII correlaciona el carácter "M" con el valor numérico 77, "N" con el 78, "O" con el 79, y así sucesivamente.

La codificación de un archivo de texto permite que un programa convierta el archivo de texto en los caracteres adecuados en la pantalla. Sin la codificación, un archivo de texto sería un flujo de números. Si intenta visualizar en pantalla un archivo de texto utilizando una codificación incorrecta, es probable que vea basura porque la aplicación que abre el archivo correlacionará los valores numéricos con un conjunto de caracteres equivocado.

Lo siguiente son tipos de codificación:

Avenue.quark es compatible con los tipos de codificación UTF-8, UTF-16 y Shift-JIS.



Rangos de caracteres superior e inferior

La mayoría de los tipos de codificación se puede dividir en dos partes: los primeros 128 caracteres (el rango inferior) y todos los caracteres a partir de allí (el rango superior).

En términos generales, el rango inferior de la mayoría de los tipos de codificación se correlaciona con los mismos caracteres. Este rango incluye los caracteres a-z, A-Z, 0-9, unos cuantos caracteres de puntuación y algunos caracteres de control especiales.

En el rango superior es donde surgen problemas. Por ejemplo, MacRoman y Windows Latin 1 tienen rangos inferiores que son más o menos idénticos. Por tanto, si toma un archivo que utiliza sólo caracteres de este rango y lo transfiere de Mac OS a Windows, se ve bien. Sin embargo, si el archivo contiene caracteres del rango superior, podría obtener resultados raros porque muchos de los valores del rango superior se correlacionan con caracteres diferentes en cada plataforma. Por ejemplo, un carácter que aparece como el símbolo de marca comercial en Mac OS podría aparecer como una "a" minúscula superíndice en Windows.

Cuando se presentan caracteres incorrectamente de esta forma se debe a que la aplicación que muestra el texto no conoce la codificación del mismo o a que la aplicación no puede mostrar correctamente el texto con la codificación especificada del archivo.


Especificación de tipos de codificación

La codificación de un archivo de XML se puede indicar incluyendo una especificación de codificación en la declaración de XML del archivo; por ejemplo:

<?xml version="1.0" standalone="yes" encoding="Shift_JIS"?>

Si un archivo de XML no contiene una especificación de codificación, avenue.quark parte de la suposición de que el archivo utiliza la codifica-ción UTF-8.

Cuando se guarda un archivo de XML en avenue.quark, se especifica la codificación del documento mediante el menú emergente Codificación, y avenue.quark genera automáticamente el atributo de codificación adecuado.



Codificación y definiciones DTD

XML permite especificar la codificación de un archivo de XML. Sin embargo, no ofrece una manera de determinar la codificación del archivo de una DTD independiente.

Afortunadamente, avenue.quark sí lo hace. Para especificar la codificación de una DTD independiente, tan sólo se tiene que añadir el siguiente texto a la primera línea en el archivo:

<? xml encoding="encodingName" ?>

Por ejemplo, para especificar una DTD independiente como una DTD UTF-16, basta con que añada la siguiente línea al comienzo del archivo:

<? xml encoding="UTF-16" ?>